﻿

CREATE  PROCEDURE [dbo].[resuma_InitializarePontaj] 
		@IdPersoana int, 
		@IdAngajatSalarizare int, 
		@KAcord decimal(6,2),
		@Luna smallint,
		@Anul smallint
AS
DECLARE @op smallint

select @op = ZileLucratoare from [resuma_SetariLuna] WHERE Luna=@Luna AND Anul=@Anul
IF @op is null
	GOTO Eroare1

INSERT 	[AngajatiPontaj] ([Valoare],[IdPersoana],[IdTipPrezenta],[IdAngajatSalarizare]
      ,[DataDefinire],[SalarUnitar],[Luna],[Anul])
SELECT 	Case WHEN Tp.TimpBaza = 'O' THEN ROUND(Angs.OreNorma*@op*Angs.FractiuneNorma,0) 
			 WHEN Tp.TimpBaza='Z' THEN ROUND(@op*Angs.FractiuneNorma,0) 	
			 ELSE 0 END AS [Valoare], @IdPersoana, Tp.IdTipPrezenta, @IdAngajatSalarizare,
		GETDATE(),Case WHEN Tp.TimpBaza = 'O' THEN AngS.Salar/(Angs.OreNorma*@op*Angs.FractiuneNorma)
			 WHEN Tp.TimpBaza='Z' THEN AngS.Salar/(@op*Angs.FractiuneNorma) 	
			 ELSE AngS.Salar END AS [SalarUnitar],@Luna,@Anul
FROM 	[TipPrezenta] Tp JOIN [AngajatiSalarizare] AngS ON Angs.IDAngajatSalarizare = @IdAngajatSalarizare
WHERE 	NOT EXISTS(SELECT * FROM AngajatiPONTAJ P WHERE P.IdPersoana = @IdPersoana AND 
					      P.IdTipPrezenta = Tp.IdTipPrezenta AND 
					      Tp.Tip = 'P' AND
					      P.IdAngajatSalarizare = @IdAngajatSalarizare AND Tp.Selectat =1)
		AND Tp.Selectat =1 AND Tp.Tip = 'P'

IF @@ERROR<>0
	GOTO EROARE
--------------------------------------------------------------------------------------
--se va lucra cu un tip de pontaj diferit, nu se va utiliza tabela de sporuri personale
--------------------------------------------------------------------------------------
GOTO Gata
EROARE:
	RAISERROR ('Eroare la initializarea pontajelor!',16,-1)
	GOTO Gata
EROARE1:
	RAISERROR ('Nu a fost definit numarul de zile din luna',16,-1)	
	GOTO Gata
Gata: